<?php

class Pager
{
	private $item_count     = 1;
	private $item_per_page  = 1;
	public $page_count      = 1;
	public $current_page    = 1;
	public $page_ref_count  = 10;

	public function __construct($item_count, $item_per_page, $current_page)
	{
		if($item_per_page == 0) $item_per_page = 1;
		
		$this->item_count    = $item_count;
		$this->item_per_page = $item_per_page;
		$this->current_page  = $current_page;
		
		if($item_count % $item_per_page == 0)
			$this->page_count = $item_count / $item_per_page;
		else
			$this->page_count = floor($item_count / $item_per_page) + 1;
		
		if($this->page_ref_count > $this->page_count)
			$this->page_ref_count = $this->page_count;
	}

	public function getPrev()
	{
		$n = $this->current_page - 1;
		if($n < 1)
			return 1;
		else
			return $n;
	}
	
	public function getNext()
	{
		$n = $this->current_page + 1;
		if($n > $this->page_count)
			return $this->page_count;
		else
			return $n;
	}
	
	public function getMin()
	{
		$num = 1;
		// если страниц больше чем показыватся ссылок на них
		if($this->page_count > $this->page_ref_count)
		{
			$rest = $this->page_count - $this->current_page;
			// Если до конца осталось менее половины количества видимых ссылок,
			// то начало диапазона всегда = всего страниц - кол-во видимых ссылок
			if($rest < $this->page_ref_count / 2)
				$num = $this->page_count - $this->page_ref_count + 1;
			// если до конца еще далеко
			else
			{
				// то если номер текущей страницы больше половины
				// кол-ва видимых ссылок
				if($this->current_page > $this->page_ref_count / 2)
					// тогда стартовый номер может быть больше 1
					$num = $this->current_page - $this->page_ref_count / 2 + 1;
			}
		}
		return $num;
	}
	
}